package icu.d4peng.cloud.user.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import icu.d4peng.cloud.common.core.vo.ListVO;
import icu.d4peng.cloud.common.core.vo.ResultVO;
import icu.d4peng.cloud.user.entity.User;
import icu.d4peng.cloud.user.request.*;

/**
 * @author d4peng
 * @version 1.0.0
 * @date 2022-01-01 11:32
 * @description UserService:用户服务
 */
public interface UserService {
    /**
     * 验证码
     *
     * @param captchaRequest 验证码请求
     * @return 验证码base64
     */
    ResultVO<String> captcha(CaptchaRequest captchaRequest);

    /**
     * 注册
     *
     * @param registerRequest 注册请求
     * @return 结果
     */
    ResultVO<String> register(RegisterRequest registerRequest);

    /**
     * 登录
     *
     * @param loginRequest 登录请求
     * @return Token信息
     */
    ResultVO<SaTokenInfo> login(LoginRequest loginRequest);

    /**
     * 登录信息
     *
     * @param id 登录的ID
     * @return 信息
     */
    ResultVO<String> info(Long id);

    /**
     * 登出
     *
     * @param id ID
     * @return 结果
     */
    ResultVO<String> logout(Long id);

    /**
     * 列表
     *
     * @param listRequest 列表请求
     * @return 列表数据
     */
    ListVO<User> list(ListRequest listRequest);

    /**
     * 详情
     *
     * @param id ID
     * @return 详情数据
     */
    ResultVO<User> get(Long id);

    /**
     * 删除
     *
     * @param id ID
     * @return 结果
     */
    ResultVO<String> delete(Long id);

    /**
     * 修改
     *
     * @param modifyRequest 修改请求
     * @return 结果
     */
    ResultVO<String> modify(ModifyRequest modifyRequest);
}
